#将108张表的txt文档路径添加到列表path中
path = []
for i in range(1,109):
    path.append('D:/Python_Files/pp/{}.txt'.format(i))

#列表delete存储需要去掉的字符
delete = ['{', '}', '_', ',', '[', ']', '\n', ' ', ':', '"', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
letters = [chr(x) for x in range(ord('a'), ord('z') + 1)]
delete.extend(letters)

#p_dict是转换字典，需要填写一些先验的标记，以辅助判断
p_dict = {1: '患者基本信息',
          2: '患者院内基本信息',
          3: '住院病案首页（++）',
          4: '就诊信息（诊断）',
          5: '转科历史（科室）',
          6: '转床记录（科室）',
          7: '科室就诊信息（科室 诊断）',
          8: '诊断记录（诊断 +）',
          9: '医疗发票记录（费用）',
          10: '医疗费用明细信息（费用）',
          11: '中西医处方（出院 用药 +）',
          12: '药品类医嘱（住院 用药 +）',
          13: '草药处方（用药）',
          14: '药品医嘱执行记录（用药）',
          15: '门急诊发药（出院 用药 +）',
          16: '住院发药（用药 +）',
          17: '化疗记录（用药 检查）',
          18: '非药品医嘱',
          19: '检查申请单（检查）',
          20: '检查记录（检查）',
          21: '肺功能检查报告（检查）',
          22: '检验记录（检验 +）',
          23: '染色体核型分析报告',
          24: '染色体FISH分析报告',
          25: '基因检测报告',
          26: 'HLA基因分型报告',
          27: '骨髓穿刺记录',
          28: '病理申请单',
          29: '病理记录',
          30: '手术申请预约（手术）',
          31: '手术记录（+）',
          32: '麻醉前访视记录（手术）',
          33: '麻醉术后访视记录（手术）',
          34: '术后镇痛观察记录（手术）',
          35: '手术麻醉主记录（手术 ++）',
          36: '手术用药记录（+）',
          37: '手术观察记录（手术）',
          38: '手术事件记录（手术）',
          39: '体外循环记录',
          40: '输血申请单（诊断）',
          41: '输血观察记录（检验 检查）',
          42: '输血评价记录（检验 检查）',
          43: '输血不良反应上报记录',
          44: '放疗记录（诊断 手术 +）',
          45: '放疗记录v2',
          46: '评分记录（科室）',
          47: '病情记录（科室）',
          48: '出入量（科室）',
          49: '护理观察（科室）',
          50: '生命体征测量记录（体征 +）',
          51: '护理记录（科室）',
          52: '管路管理',
          53: '入院评估记录（检查）',
          54: '出院评估及指导记录（检查）',
          55: '护理计划（科室）',
          56: '护理不良事件报告',
          57: '压疮护理报告',
          58: '入院记录（诊断）',
          59: '24小时内入出院记录（诊断 +）',
          60: '24小时内入院死亡记录（诊断 +）',
          61: '首次病程记录（诊断）',
          62: '日常病程记录（诊断 +）',
          63: '上级查房记录（+）',
          64: '转科记录（科室 +）',
          65: '抢救记录',
          66: '会诊记录（诊断）',
          67: '有创诊疗操作记录',
          68: '疑难危重病例讨论记录（诊断）',
          69: '交接班记录（诊断）',
          70: '阶段小结（诊断）',
          71: '术前小结（手术）',
          72: '术前讨论（手术）',
          73: '术后首次病程记录（手术 诊断+）',
          74: '死亡病例讨论记录（诊断）',
          75: '死亡记录（诊断 +）',
          76: '出院小结（用药 诊断 +）',
          77: '出院记录（诊断 +）',
          78: '临床路径',
          79: '检查类医嘱（+）',
          80: '检验类医嘱（+）',
          81: '处置类医嘱（+）',
          82: '输血类医嘱（）',
          83: '手术类医嘱（+）',
          84: '门急诊病历（用药 诊断 检查）',
          85: '门急诊抢救记录',
          86: '门急诊观察（检查）',
          87: '院内感染登记',
          88: '器械治疗院感监测',
          89: '手术切口院感监测',
          90: '随访方案',
          91: '随访结果',
          92: '胸外科手术申请预约（手术）',
          93: '胸外科体外循环记录（手术）',
          94: '胸外科手术麻醉主记录（手术 诊断）',
          95: '胸外科手术方法详细记录（手术）',
          96: '胸外科ICU记录（检查）',
          97: '体检结果明细（检查）',
          98: '体检检验（检验）',
          99: '体检检查（+）',
          100: '体检总检结论',
          101: '生物样本信息（诊断）',
          102: '病人维度统计信息',
          103: '放疗汇总记录（诊断）',
          104: '分娩记录（）',
          105: '随访全表（）',
          106: '用药全表（+）',
          107: '麻醉记录（+）',
          108: '诊断全表（+）'}
p_dict = {key:str(key)+'.'+value for key, value in p_dict.items()}

#total_dict存储最后的查询字典
total_dict = {}

#构建总查询字典
for p in range(len(path)):
    with open(path[p]) as f:
        data = f.readlines()

    data1 = []
    for i in range(len(data)):
        for j in delete:
            data[i] = data[i].replace(j, '')
        if data[i] != '':
            data1.append(data[i])

    for i in data1:
        if i in total_dict:
        	if p_dict[p+1] not in total_dict[i]:
        		total_dict[i] = total_dict[i] + ' ' + p_dict[p+1]
        else:
            total_dict[i] = p_dict[p+1]

#循环查询系统
while True:
    x = input('Please input information(quit:q):')
    if x == 'q':
        break
    else:
        blank_dict = {key:0 for key, value in total_dict.items()}
        for i in total_dict:
            count = 0
            for j in x:
                if j in i:
                    count += 1
            blank_dict[i] = count
        #对字典排序
        temp = sorted([(value, key) for key, value in blank_dict.items()], reverse=True)
        #输出最匹配的前十个
        for i in temp[:10]:
            print(i[0],':', total_dict[i[1]])
      
       

